Peer-to-peer (P2P) systems employ a network which connects participating machines together in a decentralized manner. That is, in a P2P system, a first participant may be directly coupled to a second participant; or the first participant may be coupled to the second participant through a chain of one or more intermediate participants. For example, FIG. 1 shows a high-level depiction of a P2P system 100. The system 100 includes a collection of peer entities (102-112). The peer entities (102-112) can comprise personal computer devices that are coupled together via any network or combination of networks (such as the Internet). In the exemplary case of FIG. 1, each peer entity (102-112) is connected to all other peer entities (102-112). In other cases, one or more peer entities (102-112) may be connected to other peer entities (102-112) via one or more intermediary participants (102-112). A general survey of different P2P systems can be found in D. S. Milojicic, V. Kalogeraki, R. Lukose, K. Nagaraja, J. Pruyne, B. Richard, S. Rollins, and Z. Xu., “Peer-To-Peer Computing,” Technical Report HPL-2002-57, HP Lab, 2002.
In use, any pair of directly connected peer entities (102-112) can directly transfer files or other information between themselves (as indicated by the exemplary communication path 114 between peer entity 104 and peer entity 106). Any pair of indirectly connected peer entities (102-112) can transmit information between themselves via one or more intermediary peer entities (102-112) (which act to relay the information). These provisions allow any two peer entities (102-112) to exchange information without the aid of a server (or with only minimal set-up tasks performed by the server). The P2P system 100 can also include multicasting functionality for disseminating information to a plurality of peer entities. For instance, the multicasting functionality can propagate information from any peer entity to all of the other peer entities (102-112). The multicasting functionality can also provide a mechanism for synchronizing the individual stores (not shown) maintained by the respective peer entities (102-112). This ensures that the peer entities (102-112) maintain the same replicated information in their respective stores. One feature enabled by the multicasting functionality is real-time peer-to-peer communication among multiple participants.
The above-described P2P system 100 can be implemented using a logical overlay that defines a collection of interconnected nodes. That is, individual nodes represent peer entities (102-112) in the P2P system 100, and the nodes collectively form a logical mesh (or, in the terminology used herein, a logical “graph”). In this graph, nodes can transmit information to other nodes, either in direct fashion or via one or more intermediary relay nodes. Physically, however, the P2P system 100 can rely on an underlying transport protocol to transfer information between peer entities (102-112). For example, one exemplary version of Microsoft® Windows® Peer-to-Peer Networking functionality uses IP Version 6 (IPv6) to couple peer entities together. In the context of FIG. 1, use of a single transport protocol means that all of the links that connect the peer entities (102-112) together are implemented as IPv6 links (including, for example, representative link 114).
There is room for improvement to known P2P systems. For example, the above transport strategy works well in those cases where all of the peer entities (102-112) within the P2P system 100 are capable of communicating with each other using the implemented transport protocol (e.g., IPv6). If this is not the case, however, this solution will fail to provide a mechanism for connecting all of the participants together. For example, any single protocol may be particularly ill-equipped to connect participants together when those participants are coupled to a network behind various firewalls, network address translators (NATs), and so forth.
As appreciated by the present inventors, there is also a more general need to adapt a P2P system such that its native transport mechanism (such as above-described IPv6 transport mechanism) can be conveniently replaced with another transport mechanism, so as to best accommodate the needs of a target environment in which the P2P system is being deployed.
For at least the above-identified reasons, there is an exemplary need to provide P2P systems that provide more versatile connectivity mechanisms.